package com.xdk.templatescala.dao;

import com.xdk.templatescala.common.constants.ScaleContant;
import com.xdk.templatescala.common.constants.ScaleTemplateContant;
import com.xdk.templatescala.common.enums.ScaleStatusEnum;
import com.xdk.templatescala.model.ScaleEntry;
import com.xdk.templatescala.model.ScaleTemplateEntry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;

import java.util.Arrays;
import java.util.List;

@Component
public class ScaleTemplateDao {

    @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 获取所有的量表模板
     *
     * @return
     */
    public List<ScaleTemplateEntry> findAll() {
        Query query = Query.query(Criteria.where(ScaleTemplateContant.STATUS).is(ScaleStatusEnum.SCALE_STATUS_1.getCode()));
        return mongoTemplate.find(query,ScaleTemplateEntry.class);
    }

    /**
     * 根据scaleTemplateId获取量表模板
     *
     * @return
     */
    public ScaleTemplateEntry findOne(String scaleTemplateId) {
        Query query = Query.query(Criteria.where(ScaleTemplateContant.TEMPLATE_ID).is(scaleTemplateId));
        return mongoTemplate.findOne(query,ScaleTemplateEntry.class);
    }

    /**
     * 根据名称查询量表
     *
     * @return
     */
    public List<ScaleTemplateEntry> findScaleByName(String name) {
        Query query = Query.query(Criteria.where(ScaleTemplateContant.TEMPLATE_NAME).is(name));
        return mongoTemplate.find(query,ScaleTemplateEntry.class);
    }

    /**
     * 添加量表模板
     *
     * @param scaleTemplateEntry
     */
    public void addScaleTemplateEntry(ScaleTemplateEntry scaleTemplateEntry) {
        mongoTemplate.save(scaleTemplateEntry);
    }

    /**
     * 根据scaleTemplateIds删除量表模板
     *
     * @return
     */
    public Long delScaleTemplates(String scaleTemplateIds) {
        String[] ids = scaleTemplateIds.split(",");
        Query query = Query.query(Criteria.where(ScaleTemplateContant.TEMPLATE_ID).in(Arrays.asList(ids)));
        return mongoTemplate.remove(query, ScaleTemplateEntry.class).getDeletedCount();
    }
}
